Monday, January 20, 2025
Friday, January 10, 2025
Thursday, January 9, 2025
Progress on WoW Inspired VFX
Over the winter break, I've been making progress on a World of Warcraft inspired VFX. I took inspiration from their priest class and have been making an AOE healing spell.
pls ignore the low video quality :P
I'm gonna break down some chunks of the effect.
For the AOE fx, it's composed of a couple mesh renders, beams, and sprites. I created a disc mesh in Houdini and edited the vertex colors to create a gradient from 0 to 1 to 0 from the edge to the center. For the material, I essentially lerped two noise textures on top of each other for the Emissive color, and created an erosion mask using a Voronoi texture that's controlled using dynamic parameters.
On the edges, I used beams and got them in place using a shape location module with the ring as the shape primitive. They use a similar material to one I'll discuss in the next part of the effect. Lastly, I have two sprite emitters - one for a burst as the AOE spawns, and another of some random hanging particulates.
For the effect that occurs on a player within the AOE, I'm using three beam emitters and one sprite emitter. I made a material for the beams that has two different trails and gave them a bit of distortion and WPO. I made another version of that with a rainbow as a sort of light halo effect, WoW's priest class has very subtle rainbows in their VFX so I wanted to emulate that.
The sprites just briefly float up from where they spawn, but as of now they're not timed and I'll need to work on it further.
There's still two more parts to work on with this effect, both being tied to the player that casts the spell. Once I get a good grasp at all 4 parts, I'll begin fine tuning the effect's look and timing. Working on this was a bit frustrating but rewarding at the same time! It helped me understand UV's more and I have a better foundation for all of the nodes and modules I have available to me in both materials and niagara fx. I also got to work a bit with blueprints too, which was a huge help. Excited to continue working on this!
Wednesday, December 4, 2024
Monday, December 2, 2024
Medusa Week 15
- My focus for this next turn-in, was to solidify the gaze function, add in sounds, and tighten details like volume, attenuation, and timing.
- To lock in the gaze function, I improved the HUD texture and placement, added a lose state that takes the player back to the start, added another color for Medusa's eyes to be before the player makes eye contact, and add a sound effect to play with it, along with some debugging to make sure the sound doesn't play at unwanted times.
Adding in the lose state within the player's blueprint New texture for the HUD, that appears when the gaze is triggered How the new eyes look on Medusa Added some nodes to fade out the stoned SFX once the player looks away. A sound cue to produce random snake SFX that I attached to Medusa, that uses attenuation to produce louder sounds as she gets closer to the player.
Thursday, November 14, 2024
Medusa VR Week 12
- This week I really started to focus on the post processing effect that I wanted to trigger when the player looks at Medusa. To do this I utilized this tutorial to get me started, and mended it to fit my needs.
- I also worked on a HUD display to slowly appear with the post processing effect by linking both of their alpha values together
- With the effect, I want to add an SFX that sounds like rocks cracking, but during my testing, I realized the way I triggered it made the fx play every tick that the player was looking at Medusa, so the fx played about 5 times a second, and sounded incredibly bass boosted. So, I'll need to continue looking into that next week.
Within the blueprints of the HUD Widget, we get Medusa from her blueprint and set her alpha value to the widget value, 'A' |
Create a bind within the widget menu, and link the value, 'A' to the alpha channel |
Now within our Medusa blueprints, if 'Should Glow' is true, it triggers a timeline to gradually increase the alpha value to 1, making the post processing effect visible |
To link up Medusa's eyes with her animations, set the parent socket to a joint. Braden helped set me up for this by preparing joints located at her eyes. |
To create distortion, I used a normal for a stone texture and plugged it into the WorldAlignedTexture node, which spreads it along all surfaces. |
This controls the color of the effect, and gradually changes based on the distance away from the player. |
This is the overlay I'm using in the HUD, that appears with the post processing effect. I will do another pass on the image to add more details, this is currently being used as a placeholder. |
My work logged into Perforce |
Thursday, November 7, 2024
Medusa VR Week 11
- First I worked on adding some ambiance to the world.
- I mixed together birds and wind ambiance, fire burning, torch wooshes, and falling stones
- The birds might have too much of a positive association for the environment we're in, so I may need to look into a different wind ambiance.
- The fire burning sfx are to match the torches that light up the area
- The falling stones are representative of the decrepit nature of medusa's temple, fragments of fallen victims chipping off
- I panned some sfx to the left and others to the right to create a bit of audible depth
- Hopefully I can replace it with events that will cue sfx to replace the ones in the ambiance
- Next, I started to work on a material that would become Medusa's eyes.
- Simply, a Fresnel function does most of the work, with some vector parameters to set the color, and scalar parameters to control the scaling of the fresnel, the glow amount, and the emissive multiplier.
- I quite like how creepy it looks! Since the fresnel is made up of annular sections, when placed on a sphere, its appearance remains the same from all angles, creating an illusion of a set of pupils following you
- I'd love to see if I can mend it to stretch the center to make her eyes appear more snake-like.
Material Function Graph of Glowing Eye Material |
Testing Material |
Testing Material on a Proxy Medusa |
- Now, while working on the gaze functionality, I've been working with my professor on a new methodology that should hopefully be a bit more optimized.
- Essentially, I'll be creating two vectors, one from Medusa, and one from the VR camera. We'll take the XYZ values of Medusa's vector and respectively subtract them from the VR camera's vector. Then we'll normalize the vector from the result and the original VR camera vector. Between these two vectors is an angle we'll call Theta. To get theta, we'll take the two normalized vectors and find the DOT product from the two of them. This will create a value between 0 and 1. If the value is close to 1, it means the angle is really small, and you're most likely looking at or close to Medusa. If, say, the angle is greater than 0.9, we'll make that the trigger for Medusa to turn you into stone.
- I've also been working on some destruction deformations for our stone head
- To create this, I first attached an attribute expression node, and left the constant value at (0,0,0) to then add an attribute paint node, which allowed me to paint areas that will be more sensitive to fracturing. From there a scatter node was added, that creates points along the mesh, with points being more condensed in areas I painted in the attribute paint node. Then, I added a Voronoi fracture node, and for the sake of testing, exposed the fragments using an exploded view node.
- A bit after, I felt that it looked a bit off that all the points stemmed from the outside of the statue, and it seemed a little unrealistic. So to curb that, I appended an iso offset node off of the attribute paint node, and took in the original fbx file. I merged that with the scatter node, and fed that into the Voronoi node. That then allowed me to get some geo clusters inside of the statue head!
-
Our first workshop for Houdini was today. We learned a bit about how it functions. It differs from other DCCs in that we don't edit the ...
-
In this assignment we were tasked to light a scene of a fishing village. I chose to go with a midday foggy atmosphere.
-
I'm pretty much done with the sprite project! I chose the party sprite of Totodile from Pokemon Heart Gold/Soul Silver for the 2D sprit...